Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

254
Vistas
Why does property access with await appear to result in `undefined` when the object is returned from an async function?

Please run the snippet and observe the output code to understand my issue. I stripped the problem down and made the console.logs easy to understand.

It seems that the suggested syntax for accessing object properties works in synchronous functions but does not work in an asynchronous function.

The suggested syntax to access object properties does not to work inside of async functions. Is there a logical reason for this difference in behavior, have I overlooked something in my syntax, or is this an inconsistency in JavaScript’s async objects.

var goo = (function() {
  let a = "as";
  let b = "boot";
  
  return {
    a,
    b
  }
})();

(function() {
  console.log("console.log 1:", goo)
  console.log("console.log 1.5:", goo.a);
  console.log("console.log 1.75:", goo["a"]);
})();

var go = (async function() {
  let a = "asile";
  let b = "beet";
  return {
    a,
    b
  }
})();

(async function() {
  console.log("console.log 2:", await go);
  console.log("console.log 2.5:", await go.a);
  console.log("console.log 2.75:", await go["a"]);
})();

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Your goo evaluates to a plain object, but your go evaluates to a Promise:

var go = ( async function(){
    let a = 'asile';
    let b = 'beet';
    return {a:a,b:b}
})();

So go doesn't have properties of a and b - it's not the object that the Promise resolves to, it's only the Promise. You need to either

  • extract the resolve value from the Promise before working with it, or
  • remove the async from go's IIFE so that it returns the object, and not a promise that resolves to the object.

var go = ( function(){
    let a = 'asile';
    let b = 'beet';
    return {a:a,b:b}
})();

(async function(){
    console.log('console.log 2:'+  await go);
    console.log('console.log 2.5: ' + await go.a);
    console.log('console.log 2.75:'+  await go['a']);
})();

var goProm = (async function(){
    let a = 'asile';
    let b = 'beet';
    return {a:a,b:b}
})();

goProm.then((go) => {
  (async function(){
      console.log('console.log 2:'+  await go);
      console.log('console.log 2.5: ' + await go.a);
      console.log('console.log 2.75:'+  await go['a']);
  })();
});

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda